package com.csair.platform.cit.facade.model.citzcjszjkcmx;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.Objects;
/**
 * @author zhengxincheng
 * 资产加速折旧、摊销（扣除）优惠明细表 -- 响应模型
 */
@Data
public class CitZcjszjkcmxbVo {

    /**
     * 纳税人识别号
     */
    @ApiModelProperty(value = "纳税人识别号", required = true)
    @NotEmpty(message = "纳税人识别号不能是空值")
    @Length(max = 255,message = "纳税人识别号字数 < 255")
    private String nsrsbh;
    /**
     * 所属日期起
     */
    @NotEmpty(message = "税款所属期起不能是空值")
    @ApiModelProperty(value = "税款所属期起", required = true)
    private String skssqq;
    /**
     * 所属日期止
     */
    @NotEmpty(message = "税款所属期止不能是空值")
    @ApiModelProperty(value = "税款所属期止", required = true)
    private String skssqz;

    /**
     * 行次
     */
    @ApiModelProperty(value = "行次", required = true)
    @NotEmpty(message ="《行次》不能有空值")
    private String ewbhgjz;
    /**
     * 项目
     */
    @NotEmpty(message ="《项目》不能有空值")
    private String xm;
    /**
     * 优惠税务事项
     */
    @ApiModelProperty(value = "优惠税务事项", required = true)
    private String yhswsx;

    /**
     * 税收减免性质代码
     */
    private String ssjmxzDm;
    /**
     * 本年享受优惠的资产原值
     */
    private BigDecimal bnxsyhdzcyz;
    /**
     * 账载折旧摊销金额
     */
    private BigDecimal bnljzjkcjedzz;

    /**
     * 按照税收一般规定计算的折旧摊销金额
     */
    private BigDecimal bnljzjkcjedaz;

    /**
     * 享受加速政策计算的折旧摊销金额
     */
    private BigDecimal bnljzjkcjedxs;

    /**
     * 纳税调减金额
     */
    private BigDecimal bnljzjkcjedns;

    /**
     * 享受加速政策优惠金额 (bnljzjkcjedjs = bnljzjkcjedxs - bnljzjkcjedaz)
     */
    private BigDecimal bnljzjkcjedjs;
    /**
     * 创建人
     */
    private String createBy;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date createTime;
    /**
     * 最后更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date lastTime ;

    //-----

    /**
     * 本年享受优惠的资产原值
     */
    @ApiModelProperty(value = "本年享受优惠的资产原值",required = true)
    private String bnxsyhdzcyzStr;

    /**
     * 账载折旧摊销金额
     */
    @ApiModelProperty(value = "账载折旧摊销金额",required = true)
    private String bnljzjkcjedzzStr;

    /**
     * 按照税收一般规定计算的折旧摊销金额
     */
    @ApiModelProperty(value = "按照税收一般规定计算的折旧摊销金额",required = true)
    private String bnljzjkcjedazStr;

    /**
     * 享受加速政策计算的折旧摊销金额
     */
    @ApiModelProperty(value = "享受加速政策计算的折旧摊销金额",required = true)
    private String bnljzjkcjedxsStr;

    /**
     * 纳税调减金额
     */
    @ApiModelProperty(value = "纳税调减金额",required = true)
    private String bnljzjkcjednsStr;

    /**
     * 享受加速政策优惠金额 (bnljzjkcjedjs = bnljzjkcjedxs - bnljzjkcjedaz)
     */
    @ApiModelProperty(value = "享受加速政策优惠金额",required = true)
    private String bnljzjkcjedjsStr;


    public BigDecimal getBnxsyhdzcyz() {
        if(StringUtils.isNotEmpty(bnxsyhdzcyzStr)){
            bnxsyhdzcyzStr = bnxsyhdzcyzStr.replaceAll(",","");
            bnxsyhdzcyz = new BigDecimal(bnxsyhdzcyzStr);
        }

        return bnxsyhdzcyz;
    }

    public BigDecimal getBnljzjkcjedzz() {
        if(StringUtils.isNotEmpty(bnljzjkcjedzzStr)) {
            bnljzjkcjedzzStr = bnljzjkcjedzzStr.replaceAll(",", "");
            bnljzjkcjedzz = new BigDecimal(bnljzjkcjedzzStr);
        }

        return bnljzjkcjedzz;
    }

    public BigDecimal getBnljzjkcjedaz() {
        if(StringUtils.isNotEmpty(bnljzjkcjedazStr)){
            bnljzjkcjedazStr = bnljzjkcjedazStr.replaceAll(",","");
            bnljzjkcjedaz = new BigDecimal(bnljzjkcjedazStr);
        }

        return bnljzjkcjedaz;
    }

    public BigDecimal getBnljzjkcjedxs() {
        if(StringUtils.isNotEmpty(bnljzjkcjedxsStr)){
            bnljzjkcjedxsStr = bnljzjkcjedxsStr.replaceAll(",","");
            bnljzjkcjedxs = new BigDecimal(bnljzjkcjedxsStr);
        }
        return bnljzjkcjedxs;
    }

    public BigDecimal getBnljzjkcjedns() {
        if(StringUtils.isNotEmpty(bnljzjkcjednsStr)){
            bnljzjkcjednsStr = bnljzjkcjednsStr.replaceAll(",","");
            bnljzjkcjedns = new BigDecimal(bnljzjkcjednsStr);
        }
        return bnljzjkcjedns;
    }

    public BigDecimal getBnljzjkcjedjs() {
        if(StringUtils.isNotEmpty(bnljzjkcjedjsStr)){
            bnljzjkcjedjsStr = bnljzjkcjedjsStr.replaceAll(",","");
            bnljzjkcjedjs = new BigDecimal(bnljzjkcjedjsStr);
        }
        return bnljzjkcjedjs;
    }

    public String getBnxsyhdzcyzStr() {
        bnxsyhdzcyz = Objects.isNull(bnxsyhdzcyz) ? new BigDecimal("0.00"):bnxsyhdzcyz;
        return new DecimalFormat(",##0.00").format(bnxsyhdzcyz);
    }

    public String getBnljzjkcjedzzStr() {
        bnljzjkcjedzz = Objects.isNull(bnljzjkcjedzz) ? new BigDecimal("0.00"):bnljzjkcjedzz;
        return new DecimalFormat(",##0.00").format(bnljzjkcjedzz);
    }

    public String getBnljzjkcjedazStr() {
        bnljzjkcjedaz = Objects.isNull(bnljzjkcjedaz) ? new BigDecimal("0.00"):bnljzjkcjedaz;
        return new DecimalFormat(",##0.00").format(bnljzjkcjedaz);
    }

    public String getBnljzjkcjedxsStr() {
        bnljzjkcjedxs = Objects.isNull(bnljzjkcjedxs) ? new BigDecimal("0.00"):bnljzjkcjedxs;
        return new DecimalFormat(",##0.00").format(bnljzjkcjedxs);
    }

    public String getBnljzjkcjednsStr() {
        bnljzjkcjedns = Objects.isNull(bnljzjkcjedns) ? new BigDecimal("0.00"):bnljzjkcjedns;
        return new DecimalFormat(",##0.00").format(bnljzjkcjedns);
    }

    public String getBnljzjkcjedjsStr() {
        bnljzjkcjedjs = Objects.isNull(bnljzjkcjedjs) ? new BigDecimal("0.00"):bnljzjkcjedjs;
        return new DecimalFormat(",##0.00").format(bnljzjkcjedjs);
    }

    public String getYhswsx(){
        if(StringUtils.isEmpty(xm)){
            return "";
        }
        for(XmEnum xx : XmEnum.values()){
            if(xx.getHm().equals(xm)){
                yhswsx = xx.getYhswsxm();
            }
        }
        return yhswsx;
    }
    public String getSsjmxzDm(){
        if(StringUtils.isEmpty(xm)){
            return "";
        }
        for(XmEnum xx : XmEnum.values()){
            if(xx.getHm().equals(xm)){
                ssjmxzDm = xx.getSsjmxzDm();
            }
        }
        return ssjmxzDm;
    }
}
